var JOSC_http = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
var JOSC_operaBrowser = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
var JOSC_rsearchphrase_selection="any";
/* in case of modify */
var JOSC_userName = ''; 
var JOSC_userEmail = ''; 
var JOSC_userWebsite = '';
var JOSC_userNotify = '';
/* ***************** */
var JOSC_XmlErrorAlert = false; /* will be redefined by setting */
var JOSC_AjaxDebug = false; /* will be redefined by setting */
var JOSC_AjaxDebugLevel = 2; /* will be redefined by setting */

var JOSC_postREFRESH=false;

var JOSC_clientPC = navigator.userAgent.toLowerCase();
var JOSC_clientVer = parseInt(navigator.appVersion);

var JOSC_is_ie = ((JOSC_clientPC.indexOf("msie") != -1) && (JOSC_clientPC.indexOf("opera") == -1));
var JOSC_is_nav = ((JOSC_clientPC.indexOf('mozilla')!=-1) && (JOSC_clientPC.indexOf('spoofer')==-1)
                && (JOSC_clientPC.indexOf('compatible') == -1) && (JOSC_clientPC.indexOf('opera')==-1)
                && (JOSC_clientPC.indexOf('webtv')==-1) && (JOSC_clientPC.indexOf('hotjava')==-1));
var JOSC_is_moz = 0;

var JOSC_is_win = ((JOSC_clientPC.indexOf("win")!=-1) || (JOSC_clientPC.indexOf("16bit") != -1));
var JOSC_is_mac = (JOSC_clientPC.indexOf("mac")!=-1);

var JOSC_scrollTopPos = 0;
var JOSC_scrollLeftPos = 0;

function JOSC_insertAdjacentElement( object, where, parsedNode ) {
        if (!object.JOSCinsertAdjacentElement)
				object.insertAdjacentElement(where, parsedNode);
        else
                object.JOSCinsertAdjacentElement(where, parsedNode);
}

function JOSC_insertAdjacentHTML( object, where, htmlStr ) {
        if (!object.JOSCinsertAdjacentHTML)
				object.insertAdjacentHTML(where, htmlStr);
        else
                object.JOSCinsertAdjacentHTML(where, htmlStr);
}

if (typeof HTMLElement != "undefined" && !
    HTMLElement.prototype.JOSCinsertAdjacentElement) {
    HTMLElement.prototype.JOSCinsertAdjacentElement = function
    (where, parsedNode)
    {
        switch (where) {
            case 'beforeBegin':
                this.parentNode.insertBefore(parsedNode, this)
                break;
            case 'afterBegin':
                this.insertBefore(parsedNode, this.firstChild);
                break;
            case 'beforeEnd':
                this.appendChild(parsedNode);
                break;
            case 'afterEnd':
                if (this.nextSibling)
                    this.parentNode.insertBefore(parsedNode, this.nextSibling);
                else this.parentNode.appendChild(parsedNode);
                break;
        }
    }

    HTMLElement.prototype.JOSCinsertAdjacentHTML = function
    (where, htmlStr)
    {
        var r = this.ownerDocument.createRange();
        r.setStartBefore(this);
        var parsedHTML = r.createContextualFragment(htmlStr);
        this.JOSCinsertAdjacentElement(where, parsedHTML)
    }

/*    HTMLElement.prototype.JOSCinsertAdjacentText = function
    (where, txtStr)
    {
        var parsedText = document.createTextNode(txtStr)
        this.JOSCinsertAdjacentElement(where, parsedText)
    }
    */
}

/***************************
 * F U N C T I O N S
 ***************************/
 
function JOSC_HTTPParam()
{
}

JOSC_HTTPParam.prototype.create = function(josctask, id)
{
    this.result = 'option=com_comment';
    this.insert('no_html', 1);
    var form = document.joomlacommentform;
    this.insert('component', form.component.value);
    this.insert('joscsectionid', form.joscsectionid.value);
    this.insert('josctask', josctask);
    this.insert('comment_id', id);
    return this.result;
}

JOSC_HTTPParam.prototype.insert = function(name, value)
{
    this.result += '&' + name + '=' + value;
    return this.result;
}

JOSC_HTTPParam.prototype.encode = function(name, value)
{
    return this.insert(name, encodeURIComponent(value));
}

function JOSC_BusyImage()
{
}

JOSC_BusyImage.prototype.create = function(id)
{
//	var form = document.joomlacommentform;
    var image = document.createElement('img');
    image.setAttribute('src', JOSC_template + '/images/busy.gif');
    image.setAttribute('id', id+"Image");
    var element = document.getElementById(id);
    if (!element.innerHTML) element.appendChild(image);
    JOSC_ajaxNotActive = false;
}

JOSC_BusyImage.prototype.destroy = function(id)
{
    var image = document.getElementById(id+"Image");
    image.parentNode.removeChild(image);
    JOSC_ajaxNotActive = true;
}

var JOSC_ajaxNotActive = true; /* will be set in create/destroy BusyImage */
var JOSC_busyImage = new JOSC_BusyImage();

function JOSC_ajaxSend(data, onReadyStateChange)
{
    document.joomlacommentform.bsend.disabled = true;
    JOSC_busyImage.create('JOSC_busypage');
    JOSC_busyImage.create('JOSC_busy');
    /* 
     * comment:  URL with only index2.php cause error when mode SEF AND Opera navigator (strange !!!!return with a strange tab in xml...)
     */
    var URL = JOSC_ConfigLiveSite+'/index2.php';
    JOSC_http.open("POST", URL , true);
    JOSC_http.onreadystatechange = onReadyStateChange;
    JOSC_http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    if (JOSC_AjaxDebug) alert('###AJAXSEND:\n##URL=' + URL + ' ?' + data  + '\n##onReadyStateChange=' + onReadyStateChange);
    JOSC_http.send(data);
}

function JOSC_ajaxReady()
{
    if (JOSC_http.readyState == 4) {
    	/* received */
        JOSC_busyImage.destroy('JOSC_busy');
        JOSC_busyImage.destroy('JOSC_busypage');
        document.joomlacommentform.bsend.disabled = false;
        if (JOSC_http.status == 200) {
        	/* response is ok */
          	if (JOSC_AjaxDebug) alert('AJAXREADY: OK !' );
            return true;
        } else {
          	if (JOSC_AjaxDebug) alert('AJAXREADY: KO ! Status=' + JOSC_http.status );
		    return false;
        }	
    }
    return false;
}

function JOSC_goToAnchor(name)
{
    clearTimeout(self.timer);
    action = function()
    {
		var url = window.location.toString();
		var index = url.indexOf('#');
		if (index == -1) { window.location = url + '#' + name; }
		else { window.location = url.substring(0, index) + '#' + name; }
        if (JOSC_operaBrowser) window.location = '##';
    }
    if (JOSC_operaBrowser) self.timer = setTimeout(action, 50);
    else action();
}

function JOSC_refreshPage(msg, id) 
{
	if (msg) alert(msg);

    clearTimeout(self.timer);
    action = function()
    {
		var url = window.location.toString();
		var index = url.indexOf('?option=');
		if (index == -1) { var sep = '?'; } /* SEF */
		else			 { var sep = '&'; } /* normal */
		window.location = JOSC_linkToContent + sep + 'comment_id=' + id + '#josc' + id;
        //if (JOSC_operaBrowser) window.location = '##';
    }
    if (JOSC_operaBrowser) self.timer = setTimeout(action, 50);
    else action();
}

function JOSC_getXmlResponse(withalert) {
/* return DOM (W3C) if no parsing xml error else null  (alert will show a javascript alert) */
  if (JOSC_http.responseXML && JOSC_http.responseXML.parseError &&(JOSC_http.responseXML.parseError.errorCode !=0)) {
    error = JOSC_getXmlError(withalert);
    return null; 
  } else {
  	if (JOSC_AjaxDebug) alert('###GETXMLRESPONSE:\n' + JOSC_http.responseText );
/*    if (JOSC_operaBrowser && JOSC_AjaxDebug && JOSC_AjaxDebugLevel>1) {
         txt = '';
         for (prop in JOSC_http.responseXML)
         {
             txt = txt + '\n' + prop + '=' + JOSC_http.responseXML[prop];
         }
         alert('JOSC_getXmlResponse:http.responseXML='+txt);
    }*/
    return JOSC_http.responseXML;
  }
}

function JOSC_getXmlError(withalert) {
  if (JOSC_http.responseXML.parseError.errorCode !=0 ) {
     line = JOSC_http.responseXML.parseError.line;
     pos = JOSC_http.responseXML.parseError.linepos;
     error = JOSC_http.responseXML.parseError.reason;
     error = error + "Contact the support ! and send the following informations:\n error is line " + line + " position " + pos;
	 error = error + " >>" + JOSC_http.responseXML.parseError.srcText.substring(pos);
         error = error + "\nGLOBAL:" + JOSC_http.responseText;
     if (withalert)
       alert(error);
     return error;
   } else {
     return "";
   }
}

/*
 * Form type function
 */
function JOSC_modifyForm(formTitle, buttonValue, onClick)
{
    document.getElementById('CommentFormTitle').innerHTML = formTitle;
    button = document.joomlacommentform.bsend;
    button.value = buttonValue;
    button.onclick = onClick;
}

function JOSC_xmlValue(xmlDocument, tagName)
{
    try {
        var result = xmlDocument.getElementsByTagName(tagName).item(0).firstChild.data;
    }
    catch(e) {
        var result = '';
    }
    return result;
}

function JOSC_removePost(post)
{
    document.getElementById('Comments').removeChild(post);
}

/********************* 
 * ajax call functions
 */
function JOSC_deleteComment(id)
{
    if (window.confirm(_JOOMLACOMMENT_MSG_DELETE)) {
        var data = new JOSC_HTTPParam().create('ajax_delete', id);
        JOSC_ajaxSend(data, function()
            {
                if (JOSC_ajaxReady()) {
                    if (JOSC_http.responseText != '') alert(JOSC_http.responseText);
                    else JOSC_removePost(document.getElementById('post' + id));
                }
            }
            );
    }
}

function JOSC_deleteAll()
{
	if (window.confirm(_JOOMLACOMMENT_MSG_DELETEALL)) {
        var form = document.joomlacommentform;
		var param = new JOSC_HTTPParam();
		param.create('ajax_delete_all', -1);
        JOSC_ajaxSend(param.insert('content_id',form.content_id.value), function()
            {
                if (JOSC_ajaxReady()) {
                    if (JOSC_http.responseText != '') alert(JOSC_http.responseText);
                    else {
                    	/* JOSC_addNew();  why ? */
                    	document.getElementById('Comments').innerHTML='';
					}
                }
            }
            );
    }
}


function JOSC_editComment(id)
{
    JOSC_modifyForm(_JOOMLACOMMENT_EDITCOMMENT, _JOOMLACOMMENT_EDIT,
        function(event)
        {
            JOSC_editPost(id, -1);}
        );
    JOSC_goToAnchor('CommentForm');
    var data = new JOSC_HTTPParam().create('ajax_modify', id);
    JOSC_ajaxSend(data, JOSC_editResponse);
}

function JOSC_quote(id)
{
    var data = new JOSC_HTTPParam().create('ajax_quote', id);
    JOSC_goToAnchor('CommentForm');
    JOSC_ajaxSend(data, JOSC_quoteResponse);
}

function JOSC_voting(id, yes_no)
{
    var data = new JOSC_HTTPParam().create('ajax_voting_' + yes_no, id);
    JOSC_ajaxSend(data, JOSC_votingResponse);
}

function JOSC_reloadCaptcha()
{
    var data = new JOSC_HTTPParam().create('ajax_reload_captcha', 0);
    JOSC_ajaxSend(data, JOSC_editPostResponse);
}

function JOSC_searchForm()
{
	JOSC_removeSearchResults();
	var searchform = document.joomlacommentsearch;
	var form = document.joomlacommentform;
    if (searchform) {
        searchform.parentNode.removeChild(searchform);
        if (!JOSC_operaBrowser) document.joomlacommentsearch = null;
    } else {
        var param = new JOSC_HTTPParam();
        param.create('ajax_insert_search', 0);
        JOSC_ajaxSend(param.insert('content_id', form.content_id.value), JOSC_searchFormResponse);
    }
}

function JOSC_search()
{
	JOSC_removeSearchResults();
	var keyword = document.joomlacommentsearch.tsearch.value;
	if (keyword=='') return 0;
	var param = new JOSC_HTTPParam();
	param.create('ajax_search', 0);
	param.encode('search_keyword', keyword)
	JOSC_ajaxSend(param.insert('search_phrase',JOSC_rsearchphrase_selection), JOSC_searchResponse);
}

//function editPost(id, parentid) {
//	/* for backward compatibility with templates */
//	return JOSC_editPost(id, parentid);
//}

function JOSC_editPost(id, parentid)
{
	var form = document.joomlacommentform;
    if (form.tcomment.value == '') 
    {
        alert(_JOOMLACOMMENT_FORMVALIDATE);
        return 0;
    }
    if  ( document.getElementsByName('tnotify')[0]  && document.getElementsByName('temail')[0] )
    {   if ( form.tnotify.selectedIndex && form.temail.value == '') {
            alert(_JOOMLACOMMENT_FORMVALIDATE_EMAIL);
            return 0;
        }
    }
    if (JOSC_captchaEnabled && form.security_try.value == '')
    {
        alert(_JOOMLACOMMENT_FORMVALIDATE_CAPTCHA);
        return 0;
    }
  
    
    if (JOSC_ajaxEnabled)
    {
        var param = new JOSC_HTTPParam();
        param.create(id == -1 ? 'ajax_insert' : 'ajax_edit', id);
        param.insert('content_id', form.content_id.value);
        if (JOSC_captchaEnabled) 
        {
            param.insert('security_try', form.security_try.value);
            param.insert('security_refid', form.security_refid.value);
        }
        if (parentid != -1) param.insert('parent_id', parentid);
        param.encode('tname', form.tname.value);
	    /* optional */
        if (document.getElementsByName('tnotify')[0])  { if (form.tnotify.selectedIndex) param.encode('tnotify', '1'); else param.encode('tnotify', '0'); };
        if (document.getElementsByName('temail')[0])    param.encode('temail', form.temail.value);
        if (document.getElementsByName('twebsite')[0])  param.encode('twebsite', form.twebsite.value);
        /************/
        param.encode('ttitle', form.ttitle.value);
		JOSC_ajaxSend(param.encode('tcomment', form.tcomment.value), JOSC_editPostResponse);
    } 
    else 
    {
    	/* should we use JOSC_ConfigLiveSite ? */
        form.action = JOSC_ConfigLiveSite+'/index.php?option=com_comment&josctask=noajax';
        form.submit();
    }
}

function JOSC_getComments(id, limitstart) 
{
    
	var form = document.joomlacommentform;
	if (JOSC_ajaxEnabled && JOSC_ajaxNotActive) 
    {
	    JOSC_ShowHide('', 'joscPageNavNoLink', 'joscPageNavLink')
        var param = new JOSC_HTTPParam();
        param.create('ajax_getcomments', id);
        param.insert('content_id',form.content_id.value);
    	JOSC_ajaxSend(param.insert('josclimitstart', limitstart), JOSC_getCommentsResponse);
    }
}

/*
 * END of ajax call functions
 */
 
/********************
 * response functions
 */
function JOSC_editResponse()
{
    if (JOSC_ajaxReady()) {
        if (JOSC_http.responseText.indexOf('invalid') == -1) {
            var form = document.joomlacommentform;
            var xmlDocument = JOSC_getXmlResponse(JOSC_XmlErrorAlert);; /*JOSC_http.responseXML;*/
            if (xmlDocument) {

    	        JOSC_userName = form.tname.value;
    	        form.tname.value = JOSC_xmlValue(xmlDocument, 'name');

          		form.ttitle.value = JOSC_xmlValue(xmlDocument, 'title');
          	  	form.tcomment.value = JOSC_xmlValue(xmlDocument, 'comment');

           		/* optional values of the templates ! */
            	if (document.getElementsByName('tnotify')[0]) {
            	   JOSC_userNotify = form.tnotify.selectedIndex; 
            	   form.tnotify.selectedIndex = new Boolean(JOSC_xmlValue(xmlDocument, 'notify')*1);
            	}
            	if (document.getElementsByName('temail')[0]) {
            	  JOSC_userEmail = form.temail.value; 
            	  form.temail.value = JOSC_xmlValue(xmlDocument, 'email');
            	}
            	if (document.getElementsByName('twebsite')[0]) {
            		JOSC_userWebsite = form.twebsite.value;
            	    form.twebsite.value = JOSC_xmlValue(xmlDocument, 'website');
            	}
            	/* ********************** */
            } else {
            	form.tcomment.value = 'failed to retrieve datas';
            }
            if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_edit');
        }
    }
}

function JOSC_quoteResponse()
{
    if (JOSC_ajaxReady()) {
        if (JOSC_http.responseText.indexOf('invalid') == -1) {
            var form = document.joomlacommentform;
            var xmlDocument = JOSC_getXmlResponse(true);
            if (xmlDocument) {
	            name = JOSC_xmlValue(xmlDocument, 'name');
    	        if (name == '') name = _JOOMLACOMMENT_ANONYMOUS;
        	    if (form.ttitle.value == '') form.ttitle.value = 're: ' +
            	    JOSC_xmlValue(xmlDocument, 'title');
	            form.tcomment.value += '[quote=' + name + ']' +
    	        JOSC_xmlValue(xmlDocument, 'comment') + '[/quote]';
        	} else {
            	form.tcomment.value = 'failed to retrieve datas';
            }
            if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_quote');
        }
    }
}

function JOSC_votingResponse()
{
    if (JOSC_ajaxReady()) {
        if (JOSC_http.responseText.indexOf('invalid') == -1) {
            var form = document.joomlacommentform;
            var xmlDocument = JOSC_getXmlResponse(JOSC_XmlErrorAlert); /*JOSC_http.responseXML;*/
            var id = JOSC_xmlValue(xmlDocument, 'id');
            var yes = JOSC_xmlValue(xmlDocument, 'yes');
            var no = JOSC_xmlValue(xmlDocument, 'no');
            document.getElementById('yes' + id).innerHTML = yes;
            document.getElementById('no' + id).innerHTML = no;
			if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_voting');
        }
    }
}

function JOSC_editPostResponse()
{
    if (JOSC_ajaxReady()) {
        if (JOSC_http.responseText.indexOf('invalid') == -1) {
            var form = document.joomlacommentform;
            var element = document.getElementById('Comments');
			var xmlDocument = JOSC_getXmlResponse(true); /*JOSC_http.responseXML;*/
			if (!xmlDocument) {
                return 0;
            }
            var id = JOSC_xmlValue(xmlDocument, 'id');
            var captcha = JOSC_xmlValue(xmlDocument, 'captcha');
            if (captcha) {
                JOSC_refreshCaptcha(captcha);
                if (id == 'captchaalert') {
                	alert(_JOOMLACOMMENT_FORMVALIDATE_CAPTCHA_FAILED);
                 	return 0;
                }
                if (id == 'captcha') {
                	return 0;
                }
            }
            anchor = 'josc' + id;
            var idsave = id;
            id = 'post' + id;
            var body = JOSC_xmlValue(xmlDocument, 'body');
			var post = document.getElementById(id);
            var after = JOSC_xmlValue(xmlDocument, 'after');
            JOSC_clearInputbox();
            var noerror = JOSC_xmlValue(xmlDocument, 'noerror');
			if (noerror==0) {
				alert(_JOOMLACOMMENT_REQUEST_ERROR);
				form.tcomment.value=JOSC_http.responseText;
				return 0;
            }
            var published = JOSC_xmlValue(xmlDocument, 'published');
			if (published==0) {
				alert(_JOOMLACOMMENT_BEFORE_APPROVAL);
				form.tcomment.value="";
				if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_approval');
				return 0;
            }
            if (post) {
				var className = JOSC_getPostClass(post);
                var indent = post.style.paddingLeft;
                JOSC_insertAdjacentHTML(post, 'beforeBegin', body);
                JOSC_removePost(post);
                newPost = document.getElementById(id);
                JOSC_setPostClass(newPost, className);
                newPost.style.paddingLeft = indent;
                JOSC_modifyForm(_JOOMLACOMMENT_WRITECOMMENT, _JOOMLACOMMENT_SENDFORM,
                    function(event)
                    {
                        JOSC_editPost(-1, -1);
                    });
                form.tname.value = JOSC_userName;
            	if (document.getElementsByName('temail')[0])   form.temail.value = JOSC_userEmail;
            	if (document.getElementsByName('website')[0])   form.website.value = JOSC_userWebsite;
		if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_editpost');

            } else {
                if (!after || after == -1)
                	if (JOSC_sortDownward != 0) {
                		if (JOSC_postREFRESH)
    	            		JOSC_refreshPage(_JOOMLACOMMENT_MSG_NEEDREFRESH, idsave);
	                	else
	                		JOSC_insertAdjacentHTML(element, 'afterBegin', body);
               		} else {
                		if (JOSC_postREFRESH)
    	            		JOSC_refreshPage(_JOOMLACOMMENT_MSG_NEEDREFRESH, idsave);
	                	else
                			JOSC_insertAdjacentHTML(element, 'beforeEnd', body);
               		}
                else {
                	if (document.getElementById('post' + after))
                		JOSC_insertAdjacentHTML(document.getElementById('post' + after), 'afterEnd', body);
                	else
                		/* pagination or post has been deleted or new one from another users...=> refresh */
                		JOSC_refreshPage(_JOOMLACOMMENT_MSG_NEEDREFRESH, idsave);
                }

                JOSC_setPostClass(document.getElementById(id), 'sectiontableentry' + JOSC_postCSS);
                JOSC_postCSS == 1 ? JOSC_postCSS = 2 : JOSC_postCSS = 1;
		if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_posted');
            }
            JOSC_goToAnchor(anchor);
       		//JOSC_refreshPage('', idsave);
        }
	}
}

function JOSC_getCommentsResponse() {

    //JOSC_ShowHide('', 'joscPageNavLink', 'joscPageNavNoLink');
    
    if (JOSC_ajaxReady()) {

        if (JOSC_http.responseText.indexOf('invalid') == -1) {

			JOSC_resetFormPos(); /* if reply... */
			
            var element = document.getElementById('Comments');
            var elementPN = document.getElementById('joscPageNav');

			var xmlDocument = JOSC_getXmlResponse(true); /*JOSC_http.responseXML;*/
			if (!xmlDocument) {
                return 0;
            }

            element.innerHTML='';
            elementPN.innerHTML='';

            var body 	= JOSC_xmlValue(xmlDocument, 'body');
            var pagenav	= JOSC_xmlValue(xmlDocument, 'pagenav');

            if (JOSC_sortDownward != 0)
				JOSC_insertAdjacentHTML(element, 'afterBegin', body);
            else {
                JOSC_insertAdjacentHTML(element, 'beforeEnd', body);
            }
			JOSC_insertAdjacentHTML(elementPN, 'afterBegin', pagenav);

			if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_getcomments');
		}
	}
}

function JOSC_searchFormResponse()
{
	if (JOSC_ajaxReady()) {
        form = JOSC_http.responseText;
        if (form != '') {
            JOSC_insertAdjacentHTML(document.getElementById('CommentMenu'), 'afterEnd', form);
			if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_searchform');
		}
    }
}

function JOSC_searchResponse()
{
    if (JOSC_ajaxReady()) {
        form = JOSC_http.responseText;
		if (form != '') {
            JOSC_insertAdjacentHTML(document.joomlacommentsearch, 'afterEnd', form);
			if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_search');
		}
    }
}

/*
 * END of response functions
 */

/*
 * Template functions
 */
//function JOSC_goToPost(contentid, id)
//{
//	var form = document.joomlacommentform;
//	if (form.content_id.value==contentid) JOSC_goToAnchor('josc'+id); /* not correct in case of pagination. use JOSC_viewPost */
//	else window.location = 'index.php?option=' + form.component + '&task=view&id=' + contentid + '#josc' + id;
//	if (JOSC_operaBrowser) window.location = '##';
//}
//
//function JOSC_viewPost(contentid, id, itemid)
//{
//	var form = document.joomlacommentform;
//	window.location = 'index.php?option=' + form.component + '&task=view&id=' + contentid + (itemid ? ('&Itemid='+itemid) : '') + '&comment_id=' + id + '#josc' + id;
//	if (navigator.userAgent.toLowerCase().indexOf("opera") != -1) window.location = '##';
//}

function JOSC_reply(id)
{
    var form = document.joomlacommentform;
    var post = document.getElementById('post' + id);
    var postPadding = post.style.paddingLeft.replace('px','')*1;
    form.style.paddingLeft = ( postPadding + 20 ) + 'px';
    JOSC_modifyForm(_JOOMLACOMMENT_WRITECOMMENT, _JOOMLACOMMENT_SENDFORM,
    function(event)
    {
        JOSC_editPost(-1, id);
	});
    JOSC_insertAdjacentElement(post, 'afterEnd', form);
    if (self.JOSC_afterAjaxResponse) JOSC_afterAjaxResponse('response_reply');
}

function JOSC_resetFormPos() {
    var form = document.joomlacommentform;   
    var formpos = document.getElementById('JOSC_formpos');
    if (form.parentNode.id != 'comment' || (formpos && form.parentNode.id != 'JOSC_formpos')) 
    {
	    form.style.paddingLeft = '0px';
    	form.bsend.onclick = function(event)
    	{
	        JOSC_editPost(-1, -1);
	    } ;
	    if (!formpos)
        	JOSC_insertAdjacentElement(document.getElementById('Comments'), 'afterEnd', form);
        else
			JOSC_insertAdjacentElement(formpos, 'afterEnd', form);
	}
}
		    
function JOSC_insertUBBTag(tag)
{
    JOSC_insertTags('[' + tag + ']', '[/' + tag + ']');
}

function JOSC_fontColor(){
  var color = document.joomlacommentform.menuColor.selectedIndex;
  switch (color){
    case 0: color=''; break;
    case 1: color='aqua'; break;
    case 2: color='black'; break;
    case 3: color='blue'; break;
    case 4: color='fuchsia'; break;
    case 5: color='gray'; break;
    case 6: color='green'; break;
    case 7: color='lime'; break;
    case 8: color='maroon'; break;
    case 9: color='navy'; break;
    case 10: color='olive'; break;
    case 11: color='purple'; break;
    case 12: color='red'; break;
    case 13: color='silver'; break;
    case 14: color='teal'; break;
    case 15: color='white'; break;
    case 16: color='yellow'; break;
  }
  if (color!='') JOSC_insertTags('[color='+color+']','[/color]');
}

function JOSC_fontSize()
{
    var size = document.joomlacommentform.menuSize.selectedIndex;
    switch (size) {
        case 0: size = '';
            break;
        case 1: size = 'x-small';
            break;
        case 2: size = 'small';
            break;
        case 3: size = 'medium';
            break;
        case 4: size = 'large';
            break;
        case 5: size = 'x-large';
            break;
    }
    if (size != '') JOSC_insertTags('[size=' + size + ']', '[/size]');
}

function JOSC_emoticon(icon)
{
  var txtarea = document.joomlacommentform.tcomment;
  JOSC_scrollToCursor(txtarea, 0);
  txtarea.focus();
  JOSC_pasteAtCursor(txtarea, ' ' + icon + ' ');
  JOSC_scrollToCursor(txtarea, 1);
}
/*
 * END of template function
 */
 
/*
 * ALL OTHERS UTILS FUNCTION
 */
function JOSC_insertTags(bbStart, bbEnd) {
  var txtarea = document.joomlacommentform.tcomment;
  JOSC_scrollToCursor(txtarea, 0);
  txtarea.focus();

  if ((JOSC_clientVer >= 4) && JOSC_is_ie && JOSC_is_win) {
    theSelection = document.selection.createRange().text;
    if (theSelection) {
      document.selection.createRange().text = bbStart + theSelection + bbEnd;
      theSelection = '';
      return;
    } else {
      JOSC_pasteAtCursor(txtarea, bbStart + bbEnd);
	}
  } else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0)) {
    var selLength = txtarea.textLength;
    var selStart = txtarea.selectionStart;
    var selEnd = txtarea.selectionEnd;
    var s1 = (txtarea.value).substring(0,selStart);
    var s2 = (txtarea.value).substring(selStart, selEnd)
    var s3 = (txtarea.value).substring(selEnd, selLength);
    txtarea.value = s1 + bbStart + s2 + bbEnd + s3;
    txtarea.selectionStart = selStart + (bbStart.length + s2.length + bbEnd.length);
    txtarea.selectionEnd = txtarea.selectionStart;
    JOSC_scrollToCursor(txtarea, 1);
    return;
  } else {
    JOSC_pasteAtCursor(txtarea, bbStart + bbEnd);
	JOSC_scrollToCursor(txtarea, 1);
  }
}

function JOSC_scrollToCursor(txtarea, action) {
  if (JOSC_is_nav) {
    if (action == 0) {
      JOSC_scrollTopPos = txtarea.scrollTop;
      JOSC_scrollLeftPos = txtarea.scrollLeft;
    } else {
      txtarea.scrollTop = JOSC_scrollTopPos;
      txtarea.scrollLeft = JOSC_scrollLeftPos;
    }
  }
}

function JOSC_pasteAtCursor(txtarea, txtvalue) {
  if (document.selection) {
    var sluss;
    txtarea.focus();
    sel = document.selection.createRange();
    sluss = sel.text.length;
    sel.text = txtvalue;
    if (txtvalue.length > 0) {
      sel.moveStart('character', -txtvalue.length + sluss);
    }
  } else if (txtarea.selectionStart || txtarea.selectionStart == '0') {
    var startPos = txtarea.selectionStart;
    var endPos = txtarea.selectionEnd;
    txtarea.value = txtarea.value.substring(0, startPos) + txtvalue + txtarea.value.substring(endPos, txtarea.value.length);
    txtarea.selectionStart = startPos + txtvalue.length;
    txtarea.selectionEnd = startPos + txtvalue.length;
  } else {
    txtarea.value += txtvalue;
  }
}

function JOSC_clearInputbox()
{
    var form = document.joomlacommentform;
    form.ttitle.value = '';
    form.tcomment.value = '';
}

function JOSC_getPostClass(post)
{
    return post.getElementsByTagName('table')[0].getElementsByTagName('tbody')[0].className;
}

function JOSC_setPostClass(post, value)
{
    post.getElementsByTagName('table')[0].getElementsByTagName('tbody')[0].className = value;
}

function JOSC_refreshCaptcha(captcha)
{
    document.getElementById('captcha').innerHTML = captcha;
    document.joomlacommentform.security_try.value = '';
}

function JOSC_removeSearchResults()
{
    var searchResults = document.getElementById('SearchResults');
    if (searchResults) searchResults.parentNode.removeChild(searchResults);
}

function JOSC_addNew()
{
	JOSC_resetFormPos();
/*
    var form = document.joomlacommentform;
    form.style.paddingLeft = '0px';
    form.bsend.onclick = function(event)
    {
        JOSC_editPost(-1, -1);
    } ;
    if (form.parentNode.id != 'comment')
        JOSC_insertAdjacentElement(document.getElementById('Comments'), 'afterEnd', form);
*/
    JOSC_goToAnchor('CommentForm');
}

function JOSC_ShowHide(emptyvalue, showId, hideId) {
     		    
	if (showId && showId!=emptyvalue) {
		document.getElementById(showId).style.visibility='visible';
		document.getElementById(showId).style.display = '';
	}
	if (hideId && hideId!=emptyvalue) {    
		document.getElementById(hideId).style.visibility = 'hidden';
		document.getElementById(hideId).style.display = 'none';
	}
	return(showId);    
}

function JOSC_toogle(ElementId) {
     		    
	if (ElementId) {
		if (document.getElementById(ElementId).style.visibility=='hidden') {
			document.getElementById(ElementId).style.visibility='visible';
			document.getElementById(ElementId).style.display = '';
		} else {
			document.getElementById(ElementId).style.visibility = 'hidden';
			document.getElementById(ElementId).style.display = 'none';
		}
	}
}

/*
 * return 0 if nothing done
 * return 1 if hidden->visible
 * return 2 if visible->hidden
 */
function JOSC_toogleR(ElementId) {
     		    
	if (ElementId) {
		if (document.getElementById(ElementId).style.visibility=='hidden') {
			document.getElementById(ElementId).style.visibility='visible';
			document.getElementById(ElementId).style.display = '';
			return 1;
		} else {
			document.getElementById(ElementId).style.visibility = 'hidden';
			document.getElementById(ElementId).style.display = 'none';
			return 2;
		}
	} else return 0;
} 